home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / ms_dos / tool / dbench / softtime / timeget.c < prev    next >
Text File  |  1995-02-18  |  2KB  |  68 lines

  1. /* Timeget Version 2.01 */
  2. /* Copyright (c) Namy 1994,1995. All rights reserved. */
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <process.h>
  8. #include <time.h>
  9. #include "softtime.h"
  10.  
  11. typedef unsigned int uint;
  12. typedef unsigned long ulong;
  13.  
  14. char sf=0;
  15. ulong callpersec,call;
  16. uint starttime,endtime;
  17.  
  18. void main ( int argc,char *argv[] )
  19. {
  20.     int i,t;
  21.     ulong clockt;
  22.     uint sec,msec;
  23.  
  24.     if(argc>=2)
  25.     if((*argv[1]=='-' || *argv[1]=='/') && strnicmp(argv[1]+1,"ST",2)==0)
  26.     {
  27.         sf=1;
  28.         if(*(argv[1]+3)==0)
  29.         {
  30.             printf("ソフトウェアタイマ:計測中.");
  31.             callpersec=ST_getcallpersec();    // 基準値を得る
  32.             printf("\x1b[8D%lu 回/秒\n\n",callpersec);
  33.         }
  34.         else callpersec=atol(argv[1]+3);
  35.     }
  36.  
  37.     if( argc < (3+sf) )
  38.     { printf("Usage : timeget (/ST(<n>)) <n> <command> ...\n");exit(0); }
  39.  
  40.     t=atoi(argv[1+sf]);
  41.     printf("%d 回実行します.\n",t);
  42.  
  43.     if(sf) starttime=ST_time0wait();    // 秒が変わるのを待つ
  44.     else clockt=clock();
  45.  
  46.     for(i=0;i<t;i++)
  47.         spawnvp(P_WAIT,argv[2+sf],&argv[2+sf]);
  48.  
  49.     if(sf)
  50.     {
  51.         endtime=ST_getnext0time(&call);    // 終了時刻を得る
  52.         if(endtime < starttime) endtime+=60*60;
  53.             // 分と秒しか見ていないので、追い越した=時が変わった時の補正
  54.     /*    printf("starttime=%u endtime=%u call=%lu\n",starttime,endtime,call);*/
  55.         sec=endtime-starttime-1;
  56.         msec=((callpersec-call)*100/callpersec);
  57.     }
  58.     else
  59.     {
  60.         clockt=clock()-clockt;
  61.         sec=clockt/CLOCKS_PER_SEC;
  62.         msec=(clockt%CLOCKS_PER_SEC)/(CLOCKS_PER_SEC/100);
  63.     }
  64.  
  65.     printf("所要時間 %u.%02u 秒\n",sec,msec);
  66.     exit(0);
  67. }
  68.